#include <bits/stdc++.h>
#define int long long 
using namespace std;
const int maxn = 1e5 + 5;
const int p = 1e9 + 7;
bool broken[maxn];
int dp[maxn];
int n, m;

void solve(){
	cin >> n >> m;
	for (int i=1;i<=m;i++) {
		int pos;
		cin >> pos;
		broken[pos] = true; // 表示台阶坏掉
	}
	
	dp[0] = 1;
	dp[1] = broken[1] ? 0: 1; // 不要忘记 台阶 1 也有可能是 破损的
	for (int i=2;i<=n;i++) {
		if (broken[i]) {
			// 破损了
			dp[i] = 0;
		} else {
			dp[i] = (dp[i-1] + dp[i-2]) % p; // 不要忘记取模
		}
	}
	
	cout << dp[n] << '\n';
	
}

signed main(){
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	solve();
	return 0;
}
